Codifica UTF-8Permalink

Nozioni di base

Le applicazioni in CODESYS possono elaborare un'ampia varietà di caratteri, ad esempio per produrre un messaggio di errore in varie lingue. Oppure per visualizzare le visualizzazioni in una lingua selezionata dall'utente, che accetta input dell'utente in un'ampia varietà di lingue, caratteri o simboli. Se non è necessario un set di caratteri completo o se un progetto non deve essere modificato, si possono comunque usare stringhe codificate in formato Latin-1.

Tab. 530: Tavole con personaggi

Set di caratteri

Codice numero di pagina

Descrizione

Codifica dei caratteri

ASCII

20127

  • 128 caratteri

  • Adatto per testi in inglese

Carattere codificato a 7 bit

DOS-Latino-1

819, 850

  • Conforme alla norma ISO 8859

  • Adatto alle lingue dell'Europa occidentale nella finestra della riga di comando di Windows.

Carattere codificato a 8 bit

Latino-1

28591

  • Conforme a ISO-8859-1

  • Spesso utilizzato per le pagine HTML con äöüß ma senza € o, ad esempio, senza caratteri speciali francesi.

Carattere codificato a 8 bit

Codifica Windows 1252

1252

  • Set di caratteri predefinito di Windows per i paesi dell'Europa occidentale

  • Windows utilizza internamente il formato UTF-16

  • Contiene tutti i caratteri di ISO 8859-1 e ISO 8859-15, ma in parte con una codifica diversa.

Carattere codificato a 8 bit

Unicode

 

  • Set di caratteri universale per tutte le lingue possibili, comprese le lingue storiche, il Braille, la musica o le emoji.

  • È possibile visualizzare più di 100.000 caratteri.

  • Ogni carattere ha un codice numerico.

  • A differenza dell'ASCII, viene fatta una separazione tra l'assegnazione dei punti di codice ai caratteri e la codifica dei caratteri.

  • I codici numerici < 128 sono compatibili ASCII

  • I codici numerici < 256 sono compatibili con ISO 8859-1

‎⮫ Per ulteriori informazioni, consultare il sito unicode.org.

 

Unicode 14.0

 

144.697 caratteri

 

UTF-16

1200

  • Unicode speciale

  • Utilizzato in alcuni sistemi operativi (Windows, OS X) e linguaggi di programmazione (Java, .NET) per la rappresentazione interna dei caratteri.

  • Va notato che le diverse architetture dei computer codificano i caratteri a 4 byte in modo diverso.

    Ordine dei byte little endian per UTF-16LE

Caratteri codificati a 16 bit

I caratteri sono codificati in 2 o 4 byte.

UTF-8

65001

  • Formato di codifica dei caratteri Unicode orientato ai byte.

  • La più diffusa

  • Utilizzato nei sistemi operativi GNU/Linux e Unix e in vari servizi Internet (e-mail, web, browser).

  • Compatibile con i caratteri ASCII nei primi 128 caratteri (0-127).

Tupla di parole a 8 bit per carattere

I caratteri sono codificati in diverse lunghezze, da 1 a 4 byte.

UTF-8 in CODESYS

La codifica UTF-8 è la codifica con il set di caratteri più completo. Pertanto, si consiglia di abilitare la codifica UTF-8 per i nuovi progetti e per i progetti esistenti da utilizzare in un nuovo contesto.

Tab. 531: Codifica a livello di progetto in CODESYS

Tipo di dati

Opzione di compilazione: Codifica UTF8 per STRING

Quale codifica viene utilizzata a livello di progetto?

STRINGA

Abilitato

UTF-8

Disabili

Codifica Windows 1252 (codifica predefinita di Windows)

Latino-1

VITE

Abilitato

UTF-16

Disabili

UTF-16

In CODESYS, il tipo di dati «STRING» può essere codificato nei formati Latin-1 o UTF-8. Il tipo di dati «WSTRING» codifica sempre i suoi caratteri come Unicode in UTF-16.

Codifica di un singolo letterale di stringa in formato UTF-8

Anche se il formato di codifica dell'intero progetto è impostato su Latin-1, è possibile codificare un singolo letterale in formato UTF-8. A tal fine, aggiungere il prefisso di tipo «UTF8#» al letterale.

{attribute 'monitoring_encoding' := 'UTF-8'}
strVarUtf8: STRING := UTF8#'你好,世界!ÜüÄäÖö';

Per ulteriori informazioni, vedere:

Costante: UTF8# Stringa; ⮫ «Costante: Stringa UTF8# »

Attributo Pragma: ⮫ monitoring_encoding

Conversione di stringhe per la codifica UTF-8

Se si è abilitata la codifica UTF-8 a livello di progetto, si possono usare le funzioni di conversione delle stringhe come di consueto.

Manipolazione delle stringhe

Utilizzare le funzioni di libreria per manipolare le stringhe.

Se le variabili «STRING» devono essere manipolate, l'accesso a un indice di una variabile in formato ASCII porta spesso al risultato desiderato. È meglio non utilizzare questo costrutto. Non si tratta solo di un cattivo stile di programmazione. Come se non bastasse, con la codifica UTF-8, l'accesso agli indici porta a manipolazioni indesiderate delle stringhe.

Codifica UTF-8 solo per la configurazione a livello di progetto

Viene utilizzata una codifica UTF-8 se l'opzione di compilazione a livello di progetto codifica UTF8 per STRING è abilitata. Anche le funzioni della libreria e i componenti aggiuntivi sono orientati in base a questa impostazione.

Se si utilizzano singole stringhe codificate UTF-8, bisogna assicurarsi che vengano interpretate correttamente ovunque vengano utilizzate. Ad esempio, una variabile stringa nel server OPC sarà convertita in UTF-8 prima di essere trasferita a un client se l'impostazione non è selezionata. Valori come «UTF8#'äöü'» verrebbero interpretati in modo errato. Problemi simili possono verificarsi quando si producono stringhe nella visualizzazione.